package com.punai.config.service;

import com.punai.common.core.page.TableDataInfo;
import com.punai.config.sqlitedomain.Structure;
import com.punai.config.sqlitedomain.StructureLinkItem;
import com.punai.config.sqlitedomain.Template;
import com.punai.config.sqlitedomain.bo.StructureLinkItemBo;
import com.punai.config.sqlitedomain.vo.ConfigTemplateItemVo;
import com.punai.config.sqlitedomain.vo.ConfigUpdateStructLinkItemVo;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

public interface ConfigTemplateService {

    Page initMainTable(Map<String, Object> toMap, Pageable pagination);

    Template findOne(String id) ;

    String getNewCode();

    String getNewStructureCode();

    void copyTemplate(String oid, Template model) ;

    void saveTemplate(Template model) ;

    void removeTemplate(String oid) ;

    List<Structure> findStrutsTab(String templateId) ;

    Page initDetailTable(Map<String, Object> toMap, Pageable pagination) throws  ParseException;


    Structure findOneOfStructure(String id) ;

    Structure saveStruts(Structure structure) ;

    void removeStruts(String templateId,String strutsId) ;

    Page initOrderTable(String templateId) ;

    void saveOrder(String strutsId, String templateId, String type) ;

    void itemsOrder(String strutsId,String oid, String type) throws  ParseException;

    List<StructureLinkItem> findItemByStrutsIdAndItemPid(String strutsId, String itemPid) throws  ParseException;

    void saveItem(String strutsId, String templateId, String opid, String selItemIds) ;

    void removeItem(String oid, String templateId, String strutsId) ;

    StructureLinkItemBo findItemByStrutsIdAndItemId(String strutsId, String oid) throws  ParseException;

    StructureLinkItemBo findOneOfStructureLinkItem(String oid) throws ParseException;

    void settingItem(ConfigUpdateStructLinkItemVo vo) ;

    List<Template> findTemplateByType(String type);

    TableDataInfo selectTemplateList();

    List<Template> selectAllTemplate();

    TableDataInfo selectNoUsedItem(ConfigTemplateItemVo vo);

    List<StructureLinkItemBo> selectUsedItemList(ConfigTemplateItemVo vo);

    void updateSort(String ids);

    void updateItemSort(String id, String targetId);
}
